// 正则表达式
const phoneRegex = /^1[3-9]\d{9}$/;
// 允许字母、数字和!@#$%^&*这些特殊符号，长度8-16
// const passwordRegex = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,12}$/;
// const passwordRegex = /^[A-Za-z\d!.@#$%^&*]{8,16}$/;
const passwordRegex = /^.{8,16}$/;
const smsRegex = /^[A-Za-z\d!@#$%^&*]{6,}$/;
const emailRegex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
// 验证函数
function validatePhone(phone) {
    return phoneRegex.test(phone);
}

// 验证函数
function validateEmail(phone) {
    return emailRegex.test(phone);
}

//验证密码
function validatePassword(password) {
    return passwordRegex.test(password);
}

//852fx5xx3061.vicp.fun
function validateSMS(sms) {
    return smsRegex.test(sms);
}


$(document).ready(function() {
    // 全局变量：验证码发送间隔和计时器
    let countdown = 60;
    let timer = null;

    // 点击发送验证码按钮
    $("#sendSms").click(function() {
        const mobile = $("#mobile").val().trim();

        // 验证手机号/邮箱格式
        if (!mobile) {
            showError("请输入手机号或邮箱！");
            return;
        }

        // 简单格式验证（实际项目需更严谨的正则）
        const isEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mobile);
        const isPhone = /^1[3-9]\d{9}$/.test(mobile);

        if (!isEmail && !isPhone) {
            showError("请输入正确的手机号或邮箱！");
            return;
        }

        // 禁用按钮并开始倒计时
        $(this).prop("disabled", true);
        timer = setInterval(() => {
            countdown--;
            $("#sendSms").text(`${countdown}秒后重发`);
            if (countdown <= 0) {
                clearInterval(timer);
                $("#sendSms").text("验证码").prop("disabled", false);
                countdown = 60;
            }
        }, 1000);

        // 发送AJAX请求获取验证码
        sendRequest("/sendSms", {mobile}, "POST", (data) => success(data, ""), (error) => errFail(error))
    });

    // 点击注册按钮
    $("#reg").click(function() {
        const mobile = $("#mobile").val().trim();
        const nickname = $("#nickname").val().trim();
        const password = $("#password").val().trim();
        const sms = $("#sms").val().trim();
        const isChecked = $("#is_check").prop("checked");

        // 表单验证
        if (!mobile || !nickname || !password || !sms) {
            showError("请填写完整信息！");
            return;
        }
        if(!validatePhone(mobile)&&!validateEmail(mobile)) {
            showError("请输入正确的手机号码或邮箱地址");
            return;
        }
        if (!validatePassword(password)) {
            showError("请输入8-16位任意内容");
            return;
        }
        if (!isChecked) {
            showError("请同意用户协议和隐私政策！");
            return;
        }

        // 发送注册请求
        sendRequest("/register", {mobile,nickname,password,sms}, "POST", (data) => success(data, "/task/list"), (error) => errFail(error))
    });

    // 关闭弹出窗口
    document.getElementById("closeButton").addEventListener("click", closeError);
    document.getElementById("closeButton01").addEventListener("click", closeError);

});

// 显示错误消息
function showError(message) {
    document.getElementById("errorMsg").innerText = message;
    document.getElementById("errorDialog").style.display = "block";
}

// 关闭错误提示
function closeError() {
    document.getElementById("errorDialog").style.display = "none";
}



// 发送 AJAX 请求
function sendRequest(url, data, method, successCallback, errorCallback) {
    const headers = {
        "Content-Type": "application/json",
    };
    $.ajax({
        url: url,
        data: JSON.stringify(data),
        type: method,
        headers: headers, // 设置自定义请求头
        success: successCallback,
        error: errorCallback,
    });
}

function success(data, url) {
    if (data.code === 1 || data.message === "success") {
        if (url !== "") {
            location.href = url
            return
        }
        showError(data.message);
    } else {
        showError(data.message);
    }
}

function errFail(error) {
    showError(error.message || "请求失败");
}